This invention pertains to guard-banding methods, to dynamic guard-banding methods, and related apparatus for real time image-data processing. The invention pertains particularly to peripheral units, such as laser printers.
In the past, peripheral units such as laser printers have typically captured an entire page before any image is placed on paper. The term xe2x80x9cperipheral unitxe2x80x9d as used in this document shall include, without limitation, any type of peripheral unit which produces a hard copy output or print media, e.g. laser printers (color or monochrome), copiers, facsimile devices, plotters, ink jet based devices, and the like. In such laser printers, formatting is either performed on the host computer (with large volumes of rasterized data being shipped to the printer), or on a formatter within the printer. Since a laser printer print engine operates at a constant speed, if new rasterized data is not available at a rate that keeps up with the engine""s operation, a print xe2x80x9coverrunxe2x80x9d or so-called xe2x80x9cpuntxe2x80x9d occurs and the page is not printable. Various methods for addressing print overrun situations are described in U.S. Pat. No. 5,479,587, the disclosure of which is incorporated by reference herein. Various other aspects of printers are described in the following U.S. patents, the disclosures of which are incorporated by reference: U.S. Pat. Nos. 5,450,562, and 5,459,818.
Modern printers often use firmware-driven, microprocessor-controlled formatters to control the operation of the printer. In systems where the data races the laser, so-called xe2x80x9cpunt protectionxe2x80x9d processes have been developed and employed on every page to ensure that the data keeps up with the engine speed. For example, after a page has been composed by a language-specific personality, but before it is released to the page-pipe-queue for printing by the engine, a punt protection process is employed. The punt protection process ensures that each page will race the laser in real-time, by assessing the complexity measure of each strip, and test-rasterizing the strip if necessary. If dictated by the complexity or the test-rasterization, the strip is transformed to a faster format in order to assure racing the laser, thus avoiding a punt in the real time printing of the page. Various aspects of overrun or punt protection are described in the following U.S. patents, the disclosures of which are incorporated by reference: U.S. Pat. Nos. 5,781,707, 5,129,049, 5,444,827, and 5,524,186.
For purposes of understanding various problems associated with past processing techniques relative to printers and the like, a somewhat high level block diagram describing a system configured to process image data is shown generally at 20 in FIG. 1. System 20 typically includes a so-called image pipeline which processes image data provided by a host into a form which is suitable for use by a printer engine. The image pipeline comprises a number of different elements which can be implemented in any suitable hardware, software, or firmware. In this example, image pipeline 22 includes an interpreter 24, a graphics engine 26, a canvas 28, at least one page protection process 29, and an image processor 30. An engine 32 is provided and comprises, in this example, a print engine such as would be found in a laser printer.
Typically, image data or a file gets sent to system 20 via an I/O port (not specifically designated). In a typical personal computer scenario, a print job will load through an operating system such as Windows, to a driver and will be sent out a parallel port. The print job need not, however, come from a personal computer. Rather, it can come from a mainframe, from work stations, or from other devices. In addition, it need not have parallel porting. Rather, it can come through infrared ports or LANs that show other I/O type ports, to name just a few. The print job is received by interpreter 24 which then operates upon the print job in a known manner. At the interpreter level, the print job is parsed and a job stream is formed to determine what operations are being specified. Interpreter 24 is in communication with graphics engine 26 and communicates to the graphics engine what operations are being specified. Graphics engine 26 operates on information received from interpreter 24 by doing such things as ensuring that the information does or does not have to be clipped. Additionally, if a particular structure specified by interpreter 24 needs to be filled, it determines what area has to be filled and the like. If a particular structure specified by interpreter 24 needs to be stroked, it determines what area and what objects are to be used for stroking.
Canvas 28 is provided and is in operable contact with graphics engine 26. The graphics engine 26 sends the resulting object onto canvas 28 for processing. The graphics engine 26 communicates to canvas 28 a description of the object it has operated upon. Canvas 28 breaks up information received from the graphics engine into smaller amounts of data. In this example these smaller amounts of data are known as strips. Strips are also known as work requests. Accordingly, at the canvas level, work requests are built and each work request will be unique to each strip, or perhaps duplicated across strips.
Page protection process 29 contains at least one algorithm which is directed to ensuring that all strips will meet the processing times imposed by the engine 32 on image processor 30. Various exemplary algorithms are described in one or more of the patents incorporated by reference above.
Image processor 30 is coupled with canvas 28 and will eventually receive the work requests from canvas 28 and start imaging them or rendering them into bits. The rendering of strips into bits results in formation of a raster bit map. The raster bit map is used to drive print engine 32 for rendering an image. The above description constitutes but one exemplary system which can be utilized to process image data into a form suitable for use by a print engine. More detailed information about the operation of systems, such as system 20, can be found in the patents incorporated by reference above. In addition, while the interpreter 24, graphics engine 26, canvas 28, and image processor 30 are shown as discrete elements, such need not be the case.
This invention arose out of concerns associated with providing improved overrun or punt protection, punt-margining, punt-margin-trouble shooting, and performance-tuning of various punt protection algorithms.
Methods of guard-banding, methods of dynamic guard-banding, and related apparatus for real time image-data processing are described. In one embodiment, at least one image-processing pipeline variance is measured. Responsive to measuring the image-processing pipeline variance, a guard band is imposed around a processing parameter of the image-processing pipeline. In another embodiment, a first parameter relating to processing time of a predetermined amount of data through an image-processing pipeline is determined. A second parameter relating to processing time of the predetermined amount of data through the image-processing pipeline is determined. The second parameter is related to the first parameter. The first and second parameters are compared, and responsive thereto, a guard band is imposed on at least a portion of the processing which takes place in the image-processing pipeline. In preferred embodiments, the guard bands are adjustable dynamically or on-the-fly.